<?php

/* Incluímos as classes criadas na parte 1 do tutorial. */
require_once ("PDOConnectionFactory.class.php");
require_once ("Login.class.php");


/* Damos o nome a classe que irá concentrar os métodos de acesso aos dados, como: cadastrar, editar, excluir... */
/* E fazemos com que essa herde os atributos e os métodos da classe de conexão com o BD. */

class LoginDAO extends PDOConnectionFactory {

  public $conex = null;

  /* No construtor chamamos o método getConnection da classe PDOConnectionFactory. */
  /* Esse responsável por fazer a conexão com o banco de dados */

  public function LoginDAO() {
    $this->conex = PDOConnectionFactory :: getConnection();
  }

  /* Enfim, vamos fazer a inserção dos dados no BD. */
  /* Quando instanciamos o objeto LoginDAO chamamos o método cadastrar, e passamos por ele o objeto Login. */
  /* Aqui, a função cadastrar deve ser pública já que vai ser acessada fora da classe atual. */
  /* Ela recebe como parâmetro o objeto Login. */

  public function cadastrar($login) {
    try {
      /* Iniciamos uma transação do BD. */
      $this->conex->beginTransaction();
      /* Preparamos a inserção. */
      $query = $this->conex->prepare("INSERT INTO tb_usuarios (nome, senha) VALUES (:usuario, :senha)");
      /* Criamos um array para que este possa ler os valores vindos do objeto Login. */
      $valores = array('usuario' => $login->getUsuario(), 'senha' => $login->getSenha());
      /* Executamos a inserção. */
      $query->execute($valores);
      
      $this->conex->commit();

      echo "Cadastro realizado com sucesso!";

      $this->conex = null;
      /* Se houver algum erro na tentativo do try ele é reportado aqui. */
    } catch (PDOException $ex) {
      echo "Erro: " . $ex->getMessage();
    }
  }

}

//fim do else